CodeIgniter-এ Password Hashing এবং Authentication নিরাপত্তার গুরুত্বপূর্ণ দিক। Password Hashing নিশ্চিত করে যে ব্যবহারকারীর পাসওয়ার্ড প্লেইন টেক্সটে সংরক্ষিত না হয়ে hashed আকারে রাখা হয়, যা নিরাপত্তা বাড়ায়। Authentication ব্যবহারকারীর পরিচয় যাচাই করার প্রক্রিয়া, যাতে শুধুমাত্র অনুমোদিত ব্যবহারকারীরা অ্যাপ্লিকেশনে প্রবেশ করতে পারে।
পাসওয়ার্ড হ্যাশিং একটি নিরাপত্তা প্রক্রিয়া, যেখানে পাসওয়ার্ডকে একটি একমুখী ফাংশন দিয়ে হ্যাশ করা হয় এবং এটি ডেটাবেসে সংরক্ষণ করা হয়। যখন ব্যবহারকারী লগইন করতে চেষ্টা করেন, তখন তাদের প্রদত্ত পাসওয়ার্ডকে হ্যাশ করা পাসওয়ার্ডের সাথে তুলনা করা হয়।
CodeIgniter 4 এ Password হ্যাশিং করতে password_hash()
এবং password_verify()
ফাংশন ব্যবহার করা হয়।
namespace App\Controllers;
use CodeIgniter\Controller;
class AuthController extends Controller {
public function register() {
// ফর্ম ডেটা
$password = $this->request->getPost('password');
// পাসওয়ার্ড হ্যাশিং
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
// ডাটাবেসে হ্যাশড পাসওয়ার্ড সংরক্ষণ করুন
$data = [
'username' => $this->request->getPost('username'),
'email' => $this->request->getPost('email'),
'password' => $hashedPassword
];
// ডাটাবেসে ডেটা ইনসার্ট করুন
// Assume you have a model for users
$userModel = new \App\Models\UserModel();
$userModel->save($data);
return redirect()->to('login'); // অথবা Success Page
}
}
password_hash($password, PASSWORD_DEFAULT)
: এটি একটি নিরাপদ হ্যাশ (যেমন bcrypt) তৈরি করবে, যা পাসওয়ার্ডকে নিরাপদে সংরক্ষণ করবে।PASSWORD_DEFAULT
: এটি bcrypt অথবা অন্য উন্নত পদ্ধতিতে পাসওয়ার্ড হ্যাশ করবে।লগইন করার সময়, ব্যবহারকারীর ইনপুট করা পাসওয়ার্ড যাচাই করার জন্য password_verify()
ফাংশন ব্যবহার করা হয়।
public function login() {
// ইনপুট ডেটা
$email = $this->request->getPost('email');
$password = $this->request->getPost('password');
// ব্যবহারকারী ডেটা প্রাপ্তি
$userModel = new \App\Models\UserModel();
$user = $userModel->where('email', $email)->first();
// পাসওয়ার্ড যাচাই
if ($user && password_verify($password, $user['password'])) {
// লগইন সফল
session()->set('user_id', $user['id']);
return redirect()->to('dashboard'); // ড্যাশবোর্ডে রিডাইরেক্ট করুন
} else {
// লগইন ব্যর্থ
return redirect()->to('login')->with('error', 'Invalid credentials');
}
}
password_verify($password, $hashedPassword)
: এটি ব্যবহারকারীর ইনপুট করা পাসওয়ার্ড এবং ডাটাবেসে সংরক্ষিত হ্যাশড পাসওয়ার্ডের সাথে তুলনা করবে।Authentication হল ব্যবহারকারীর পরিচয় যাচাই করার প্রক্রিয়া, যেখানে পাসওয়ার্ড হ্যাশিং ব্যবহৃত হয়। লগইন এবং সেশন ব্যবস্থাপনা এই প্রক্রিয়ার অন্তর্ভুক্ত।
CodeIgniter সেশন পরিচালনার জন্য বিল্ট-ইন সেশন লাইব্রেরি সরবরাহ করে। সেশন ব্যবহার করে আপনি লগইন করা ব্যবহারকারীকে ট্র্যাক করতে পারেন।
namespace App\Controllers;
use CodeIgniter\Controller;
class AuthController extends Controller {
public function login() {
// ফর্ম ডেটা
$email = $this->request->getPost('email');
$password = $this->request->getPost('password');
// ব্যবহারকারী ডেটা প্রাপ্তি
$userModel = new \App\Models\UserModel();
$user = $userModel->where('email', $email)->first();
// পাসওয়ার্ড যাচাই
if ($user && password_verify($password, $user['password'])) {
// সেশন সেট করা
session()->set('user_id', $user['id']);
session()->set('username', $user['username']);
return redirect()->to('dashboard'); // ড্যাশবোর্ডে রিডাইরেক্ট করুন
} else {
return redirect()->to('login')->with('error', 'Invalid credentials');
}
}
public function logout() {
// সেশন ডেস্ট্রয় করা
session()->destroy();
return redirect()->to('login'); // লগইন পেজে রিডাইরেক্ট
}
}
session()->set()
: সেশন ডেটা সেট করে।session()->destroy()
: সেশন মুছে দেয়।লগইন করা ব্যবহারকারীর প্রমাণীকরণ যাচাই করতে, আপনি সেশন ডেটা ব্যবহার করতে পারেন:
public function dashboard() {
if (!session()->has('user_id')) {
return redirect()->to('login'); // যদি সেশন না থাকে, লগইন পেজে রিডাইরেক্ট
}
// ড্যাশবোর্ড কনটেন্ট দেখান
return view('dashboard');
}
Authorization হল একটি ব্যবহারকারী কোন বিশেষ ভূমিকা বা অনুমতি পায় তা যাচাই করা। যেমন, কিছু পেজ শুধুমাত্র প্রশাসকরা অ্যাক্সেস করতে পারবে।
public function adminDashboard() {
if (!session()->has('user_id') || session()->get('role') !== 'admin') {
return redirect()->to('login'); // প্রশাসক ছাড়া অন্য কেউ অ্যাক্সেস করতে পারবে না
}
return view('admin_dashboard');
}
এখানে, role
সেশন ভেরিয়েবলের মাধ্যমে একজন ব্যবহারকারী প্রশাসক কিনা তা যাচাই করা হয়।
password_hash()
এবং password_verify()
ব্যবহার করুন।CodeIgniter এ Password Hashing এবং Authentication নিরাপত্তা এবং প্রমাণীকরণ ব্যবস্থাপনার জন্য গুরুত্বপূর্ণ দুটি উপাদান। পাসওয়ার্ড হ্যাশিংয়ের মাধ্যমে আপনি নিরাপদভাবে পাসওয়ার্ড সংরক্ষণ করতে পারেন এবং সেশন ম্যানেজমেন্ট এবং role-based authorization এর মাধ্যমে ব্যবহারকারীর প্রমাণীকরণ এবং অনুমতি যাচাই করতে পারেন।
Read more